// 版权归Epic Games, Inc.所有。保留所有权利。

#pragma once

#include "UserSettings/EnhancedInputUserSettings.h"
#include "PlayerMappableKeySettings.h"

#include "LyraInputUserSettings.generated.h"

#define UE_API LYRAGAME_API

/** 
 * Lyra游戏任何输入相关设置的自定义设置类。
 * 这将与Lyra共享设置同时序列化，并通过调用"Serialize"函数与云保存兼容。
 */
UCLASS(MinimalAPI)
class ULyraInputUserSettings : public UEnhancedInputUserSettings
{
	GENERATED_BODY()
public:
	//~ Begin UEnhancedInputUserSettings interface
	/**
	 * 应用设置
	 */
	UE_API virtual void ApplySettings() override;
	//~ End UEnhancedInputUserSettings interface

	// 在这里添加任何额外的输入设置！
	// 一些想法可以是：
	// - "切换 vs. 按住"来触发游戏内动作
	// - 瞄准灵敏度应该放在这里
	// - 等等

	// 确保将您的属性标记为"SaveGame"元数据，以便在保存时序列化它们
	//UPROPERTY(SaveGame, BlueprintReadWrite, Category="Enhanced Input|User Settings")
	// bool bSomeExampleProperty; // 一些示例属性
};

/**
 * 玩家可映射键设置是每个动作键映射可访问的设置。
 * 这是您可以放置额外元数据的地方，这些元数据可能被您的设置UI、
 * 输入触发器或其他您想了解键设置的地方使用。
 */
UCLASS(MinimalAPI)
class ULyraPlayerMappableKeySettings : public UPlayerMappableKeySettings
{
	GENERATED_BODY()
	
public:

	/** 返回在设置屏幕上显示此键时应显示的工具提示 */
	UE_API const FText& GetTooltipText() const;

protected:
	/** 在设置屏幕上显示此动作时应关联的工具提示 */
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings", meta=(AllowPrivateAccess=true))
	FText Tooltip = FText::GetEmpty(); // 工具提示文本
};

#undef UE_API